home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / SWAG / SWAGA_C / ARCHIVES.SWG / 0008_SHOW ARJ Archive Files.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  2KB  |  75 lines

  1.  
  2. Program ReadArj;
  3. Uses
  4.  Crt,
  5.  Search;
  6.  
  7. Const
  8.   ArjID = #96#234;
  9.  
  10. Type
  11.   Array10 = Array[1..10] of Byte;
  12.   Array12 = Array[1..12] of Char;
  13.  
  14.   AFileRec = Record
  15.                FileDate       : LongInt;
  16.                CompressedSize : LongInt;
  17.                originalSize   : LongInt;
  18.                DudSpace       : Array10;
  19.                FileName       : Array12
  20.              end;
  21.  
  22.   Array60K = Array[1..61440] of Byte;
  23.  
  24. Var
  25.   Buffer : Array60K;
  26.  
  27.   ArjFileRec : AFileRec;
  28.  
  29.   ArjFileSize,
  30.   ArjRecStart,
  31.   ArjRecStop,
  32.   Index,
  33.   Index1 : LongInt;
  34.  
  35.   ArjFile : File;
  36.  
  37. begin
  38.   ClrScr;
  39.   fillChar(Buffer, sizeof(Buffer), 0);
  40.   fillChar(ArjFileRec, sizeof(ArjFileRec), 0);
  41.   ArjFileSize := 0;
  42.   ArjRecStart := 1;
  43.   ArjRecStop := 0;
  44.   assign(ArjFile, 'TEST.ARJ');
  45.   {$I-}
  46.   reset(ArjFile, 1);
  47.   {$I+}
  48.   if (ioresult <> 0) then
  49.     begin
  50.       Writeln(' ERRor OPENinG TEST.ARJ');
  51.       halt(255)
  52.     end;
  53.   ArjFileSize := Filesize(ArjFile);
  54.   Index := ArjFileSize - 50;
  55.   blockread(ArjFile, Buffer, Index);
  56.   close(ArjFile);
  57.   Index1 := 50;
  58.   ArjFileRec.Filename := '            ';
  59.   While ((Index1 + 33) < ArjFileSize) do
  60.     begin
  61.       ArjRecStart := StrPos(Buffer[Index1], Index, ArjID) + 11;
  62.       ArjRecStop := StrPos(Buffer[Index1 + ArjRecStart + 22], 13, #0);
  63.       move(Buffer[ArjRecStart + Index1], ArjFileRec, (ArjRecStop + 21));
  64.       With ArjFileRec do
  65.         begin
  66.           Writeln(' ',FileName, '  Compressed size = ', CompressedSize:6,
  67.                     '  original size = ', originalSize:6);
  68.           FileName := '            ';
  69.           inc(Index1, CompressedSize + ArjRecStop + ArjRecStart);
  70.           dec(Index, CompressedSize + ArjRecStop + ArjRecStart)
  71.         end
  72.     end
  73. end.
  74.  
  75.